package tech.yunjing.train.dao;

import com.mongodb.WriteResult;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import tech.yunjing.train.entity.VerificationCode;

import java.util.List;

/**
 * purpose：验证码Dao
 * Created by 吕祥 on 2017/6/10.
 */
public interface CodeMongoDao<T> {

    /**
     * 判断验证码是否存在
     * @param verificationCode 验证码
     * @return ture = 存在  false = 不存在(可用)
     */
    boolean isVerificationCodeExists(String verificationCode);

    /**
     * 查询所有验证码
     * @return 验证码集合
     */
    List<T> findAllVerificationCode(VerificationCode verificationCode);

    /**
     * 保存验证码
     * @param verificationCode 实体类
     * @return 验证码
     */
    T saveCode(T verificationCode);

    /**
     * 修改验证码状态
     * @param query 查找
     * @param update 修改
     * @return 结果
     */
    WriteResult updateVerificationCodeStatus(Query query, Update update);

    /**
     * 根据条件查找一条数据
     * @param query 查找对象
     * @return 查找到的对象
     */
    T findCodeOne(Query query);

    /**
     * 根据verificationCode查询
     * @param verificationCode 验证码
     * @return 验证码
     */
    T findByUserAccount(String verificationCode);


}
